원격 프로시저 호출
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
원격 프로시저 호출(RPC)은 다른 주소 공간(일반적으로 공유 네트워크)에 있는 프로시저를 호출하는 기술이다. 1960년대 후반 분산 컴퓨팅에서 시작되었으며, 1980년대 초에 실제 구현이 이루어졌다. RPC는 클라이언트가 서버에 요청 메시지를 보내고, 서버가 응답을 반환하는 요청-응답 프로토콜을 사용한다. 초기에는 유닉스 환경에서 썬의 RPC가 널리 사용되었으며, 1990년대에는 객체 지향 프로그래밍의 발전과 함께 CORBA, 자바 RMI와 같은 대안 모델이 등장했다. RPC는 다양한 인터페이스, 메시지 전달 방식, 그리고 표준 메커니즘을 가지며, Java RMI, XML-RPC, gRPC 등 여러 기술과 규격이 존재한다. 국내에서는 분산 시스템, 클라우드 컴퓨팅, 마이크로서비스 아키텍처 등에서 RPC 기술이 활용되고 있으며, gRPC와 같은 고성능 프레임워크의 도입이 증가하고 있다.
더 읽어볼만한 페이지
- 원격 프로시저 호출 - D-Bus
D-Bus는 2002년에 시작된 프로세스 간 통신 시스템으로, 시스템 버스와 세션 버스를 통해 정보 공유, 모듈성, 권한 격리를 제공하며, 일대일 요청-응답 및 발행/구독 통신 방식을 지원한다. - 원격 프로시저 호출 - DCE/RPC
DCE/RPC는 분산 컴퓨팅 환경에서 원격 프로시저 호출을 가능하게 하는 프로토콜로, 오픈 소프트웨어 재단에서 개발되었으며, 다양한 운영체제와 환경에서 사용된다. - 분산 컴퓨팅 - 클라우드 컴퓨팅
클라우드 컴퓨팅은 인터넷을 통해 컴퓨팅 자원을 서비스 형태로 제공하는 모델로, 다양한 서비스 및 배치 모델을 가지며 비용 효율성과 확장성을 제공하지만 보안 및 의존성 문제도 존재하며 지속적으로 발전하고 있다. - 분산 컴퓨팅 - 그리드 컴퓨팅
그리드 컴퓨팅은 지리적으로 분산된 컴퓨터 자원을 연결하여 가상 슈퍼컴퓨터를 구축하는 기술이며, 유휴 자원을 활용하고 과학 연구 등 다양한 분야에 활용된다. - 운영체제 기술 - 프로세스
프로세스는 컴퓨터에서 실행되는 프로그램의 인스턴스로, 운영 체제가 시스템 자원을 효율적으로 관리하며 멀티태스킹 환경에서 독립적인 실행 흐름을 유지한다. - 운영체제 기술 - 커널 (컴퓨팅)
커널은 운영 체제의 핵심으로, 하드웨어와 소프트웨어 간 상호 작용을 관리하며 시스템 보안, 자원 관리, 하드웨어 추상화, 프로세스 스케줄링, 프로세스 간 통신, 다중 작업 환경 지원 등의 기능을 제공하고, 모놀리식, 마이크로, 혼합형 커널 등으로 구현되며 가상화 및 클라우드 컴퓨팅 환경에서 중요성이 커지고 있다.
원격 프로시저 호출 | |
---|---|
개요 | |
이름 | 원격 프로시저 호출 |
영어 명칭 | Remote Procedure Call (RPC) |
상세 정보 | |
유형 | 통신 프로토콜 |
목적 | 다른 주소 공간에서 서브루틴 또는 프로시저를 실행하는 데 사용됨 |
작동 방식 | 클라이언트가 서버에서 프로시저를 실행하도록 요청하고, 서버는 요청을 처리하고 결과를 클라이언트에게 반환함 |
장점 | 분산 시스템에서 모듈성을 높이고, 네트워크 통신을 단순화함 |
단점 | 네트워크 문제, 보안 문제, 성능 문제 등이 발생할 수 있음 |
역사 | |
개발 시기 | 1970년대 |
주요 개발자 | 브루스 제이 넬슨 (Bruce Jay Nelson) |
초기 구현 | 아폴로 컴퓨터 (Apollo Computer)의 네트워크 컴퓨팅 시스템 (Network Computing System) |
기술적 측면 | |
프로토콜 | ONC RPC DCE RPC CORBA Java RMI gRPC Thrift |
메시지 형식 | XML JSON Protocol Buffers |
직렬화 | 데이터를 네트워크를 통해 전송할 수 있는 형식으로 변환하는 과정 |
스텁 (Stub) | 클라이언트와 서버 간의 인터페이스 역할을 하는 코드 |
마샬링 (Marshalling) | 프로시저 호출 인수를 메시지로 변환하는 과정 |
언마샬링 (Unmarshalling) | 메시지를 프로시저 호출 인수로 변환하는 과정 |
활용 예시 | |
분산 시스템 | 여러 컴퓨터에 분산된 작업을 수행하는 데 사용됨 |
클라우드 컴퓨팅 | 클라우드 기반 서비스에서 백엔드 통신에 사용됨 |
웹 서비스 | 웹 서비스 API를 구현하는 데 사용됨 |
보안 고려 사항 | |
인증 | 클라이언트와 서버가 서로를 인증하는 과정 |
암호화 | 네트워크를 통해 전송되는 데이터를 보호하는 데 사용됨 |
권한 부여 | 클라이언트가 특정 프로시저를 호출할 권한이 있는지 확인하는 과정 |
관련 기술 | |
메시지 큐 | 비동기 통신을 위한 메커니즘 |
서비스 지향 아키텍처 (SOA) | 서비스를 중심으로 구축된 소프트웨어 아키텍처 |
마이크로 서비스 | 작고 독립적인 서비스로 구성된 애플리케이션 아키텍처 |
2. 역사
RPC의 기원은 1960년대 후반 분산 컴퓨팅의 초기 연구로 거슬러 올라간다. 1970년대에 원격 프로시저 호출에 대한 이론적 제안이 이루어졌고, 1980년대 초에 실제 구현이 등장했다.[1] 1978년, 페르 브린치 한센은 프로세스 간의 프로시저 호출로 구성된 "외부 요청"을 기반으로 하는 분산 컴퓨팅 언어인 분산 프로세스를 제안했다.[5]
아폴로 컴퓨터의 "Network Computing System"(NCS)은 또 다른 초기 UNIX 구현 중 하나이다. NCS는 이후 OSF의 DCE에서 DCE/RPC의 기반으로 사용되었다. 약 10년 후, 마이크로소프트는 DCE/RPC를 자사의 RPC (MSRPC)의 기반으로 채택하여 DCOM 구현에 사용했다. 같은 시기(1990년대 중반), 팔로 알토 연구소의 ILU와 Object Management Group영어의 CORBA는 상속 메커니즘을 갖춘 분산 객체에 관한 RPC 패러다임으로 등장했다.
2. 1. 초기 역사
브루스 제이 넬슨은 1981년에 "원격 프로시저 호출"이라는 용어를 처음 사용한 것으로 널리 알려져 있다.[1]현대 운영 체제에서 사용되는 원격 프로시저 호출은 프로세스 동기화를 위해 요청-응답 통신 프로토콜을 사용했던 RC 4000 다중 프로그래밍 시스템으로 거슬러 올라간다.[2][3] 네트워크 작업을 원격 프로시저 호출로 취급하는 아이디어는 적어도 1970년대 초 ARPANET 문서에서 시작되었다.[4]
1982년 브라이언 렌델과 그의 동료들이 유닉스 머신 간의 뉴캐슬 커넥션을 위해 RPC를 개발했다.[6] 이어서 제록스 PARC의 시더 환경에서 앤드루 비렐과 브루스 넬슨이 개발한 "Lupine"이 등장했다.[7][8][9] Lupine은 스텁을 자동으로 생성하여 타입 안전 바인딩을 제공했으며, 효율적인 통신 프로토콜을 사용했다.[8]
2. 2. 상용화 및 발전
1981년 제록스가 "Courier"라는 이름으로 RPC를 처음 상업적으로 사용했다.[1] 유닉스에서 RPC의 최초 대중적인 구현은 썬 마이크로시스템즈의 RPC (현재는 ONC RPC)였으며, 이는 네트워크 파일 시스템(NFS)의 기반으로 사용되었다.[1] 1990년대에는 객체 지향 프로그래밍의 인기에 힘입어 공통 객체 요청 브로커 아키텍처(CORBA, 1991) 및 자바 원격 메서드 호출과 같은 원격 메서드 호출(RMI) 모델이 등장했다.3. 인터페이스
RPC 프로그래밍 인터페이스는 다양한 계층으로 구성되어 있다. 최상위 계층은 사용자가 시스템 제공 RPC 함수를 직접 호출하는 방식으로, 라이브러리 함수처럼 사용 가능하다. 다만, RPC 라이브러리 함수 목적 코드 포함 등의 특별한 설정이 필요하다.
RPC 라이브러리 함수는 사용이 쉽고 프로그래밍 부담이 적지만, 시스템 정의 RPC 라이브러리 함수가 많지 않아 응용에 한계가 있다.
두 번째 계층은 rpcgen 컴파일러를 사용하여 클라이언트와 서버의 스터브(stub) 루틴을 자동 생성한다. 사용자는 클라이언트 main 함수와 서버 RPC 함수만 작성하면 된다. rpcgen 컴파일러는 사용자 정의 데이터 유형을 XDR 형식으로 변환하는 XDR 함수도 생성한다. 이점은 하위 계층 RPC API를 알 필요 없이 RPC 함수와 클라이언트 main 함수 작성에 집중할 수 있다는 것이다. 이는 프로그래밍 노력을 절감하고 오류 발생 가능성을 줄여준다.
그러나 이 방식은 rpcgen이 생성한 클라이언트-서버 프로그램에 사용되는 네트워크 트랜스포트의 세부 속성을 제어하기 어렵고, XDR 함수에 사용되는 동적 메모리 관리가 불가능하다는 단점이 있다.
최하위 계층은 RPC API를 직접 사용하여 RPC 클라이언트와 서버 프로그램을 생성한다. 이는 네트워크 트랜스포트와 XDR 함수의 동적 메모리 관리를 직접 제어할 수 있다는 장점이 있지만, 더 많은 프로그래밍 노력이 필요하다.
4. 메시지 전달
원격 프로시저 호출(RPC)은 요청-응답 프로토콜을 기반으로 동작한다. 클라이언트는 지정된 매개변수와 함께 원격 프로시저를 실행하기 위한 요청 메시지를 서버로 보낸다. 서버는 요청을 처리하고 결과를 클라이언트에 응답으로 보낸다. 클라이언트는 서버가 호출을 처리하는 동안 차단될 수 있다(동기 방식). 하지만 XMLHttpRequest와 같은 비동기 요청을 통해 차단 없이 작업을 계속할 수도 있다.
원격 프로시저 호출과 로컬 호출의 중요한 차이점은 원격 호출이 예측할 수 없는 네트워크 문제로 인해 실패할 수 있다는 것이다.[1] 또한 호출자는 원격 프로시저가 실제로 호출되었는지 여부를 알지 못한 채 이러한 오류를 처리해야 한다.[1] 멱등 프로시저(두 번 이상 호출해도 추가적인 영향이 없는 프로시저)는 쉽게 처리할 수 있지만,[1] 원격 프로시저를 호출하는 코드는 신중하게 작성된 하위 수준 하위 시스템으로 제한하는 것이 좋다.
4. 1. 이벤트 순서
원격 프로시저 호출(RPC)을 클라이언트가 시작하여 완료하기까지 거치는 단계는 다음과 같다.1. 클라이언트는 클라이언트 스텁을 호출한다. 이는 일반적인 로컬 프로시저 호출과 같이 매개변수를 스택에 푸시한다.
2. 클라이언트 스텁은 매개변수를 메시지로 묶는 마샬링을 수행하여 시스템 호출을 통해 서버로 보낸다.
3. 클라이언트의 운영체제는 메시지를 서버 머신으로 전송한다.
4. 서버 머신의 운영체제는 받은 메시지를 서버 스텁에 전달한다.
5. 서버 스텁은 메시지에서 매개변수를 풀어내는 언마샬링을 수행한다.
6. 서버 스텁은 서버 프로시저를 호출하고, 서버 프로시저는 응답을 반환한다. 응답은 역순으로 같은 단계를 거쳐 클라이언트에 전달된다.
RPC는 실행할 프로시저와 인수를 담은 요청 메시지를 원격 서버에 보내는 방식으로 시작된다. RPC는 크게 동기형과 비동기형으로 나뉜다.
- 동기형 RPC: 서버가 RPC를 처리하는 동안 클라이언트는 응답을 기다린다(호출 블록). 서버가 응답하면 클라이언트 프로세스가 계속된다.
- 비동기형 RPC: 클라이언트는 호출 후 응답을 기다리지 않고 다음 처리를 계속한다. 서버 응답은 콜백으로 통지된다.
동기형 RPC는 서버나 클라이언트가 느리거나 대량의 데이터를 전송할 때 문제가 발생할 수 있지만, 비동기형 RPC는 이를 해결할 수 있다.
RPC 프로토콜은 구현에 따라 미묘한 차이를 보이는 다양한 변형이 있으며, 이들 간 호환성은 없다.
RPC는 일반적인 로컬 호출과 달리 예측할 수 없는 네트워크 문제로 실패할 수 있다. 프로시저 실행 여부를 클라이언트가 알 수 없는 경우도 있다. 이러한 문제를 해결하기 위해 이중 실행해도 영향이 없는 프로시저를 사용하거나, 주의 깊게 작성된 저수준 서브 시스템에서 호출 코드를 실행하기도 한다. 타임아웃 시간을 설정하여 응답이 없으면 예외를 발생시키는 API도 사용된다.
5. 주요 특징 및 고려사항
원격 프로시저 호출(RPC)과 로컬 호출의 주요 차이점은 원격 호출이 예측 불가능한 네트워크 문제로 실패할 수 있다는 것이다. 또한 호출자는 원격 프로시저가 실제로 호출되었는지 알 수 없는 상태에서 이러한 오류를 처리해야 한다. 멱등 프로시저(두 번 이상 호출해도 추가적인 영향이 없는 프로시저)는 비교적 쉽게 처리할 수 있지만, 그렇지 않은 경우에는 적절한 대응이 어려워 주의가 필요하다.
6. 표준 메커니즘
다양한 클라이언트가 서버에 접근할 수 있도록 여러 표준화된 RPC 시스템이 개발되었다. 이들 대부분은 다양한 플랫폼에서 RPC를 호출할 수 있도록 인터페이스 기술 언어(IDL)를 사용한다. IDL 파일은 클라이언트와 서버 간의 인터페이스 코드를 생성하는 데 사용될 수 있다.
7. RPC 기술 및 규격
RPC 프로그래밍 인터페이스는 다양한 계층으로 구성되어 있다. 최상위 계층에서는 시스템이 제공하는 RPC 함수를 직접 호출하여 원격 시스템의 정보를 얻을 수 있다. 이러한 함수들은 라이브러리 함수처럼 쉽게 사용할 수 있지만, 시스템에서 정의된 RPC 라이브러리 함수는 많지 않아 응용에 한계가 있다.
두 번째 계층에서는 `rpcgen` 컴파일러를 사용하여 RPC 클라이언트와 서버의 스텁 루틴을 자동으로 생성한다. 사용자들은 클라이언트와 서버 프로그램을 생성하기 위한 클라이언트의 main 함수와 서버의 RPC 함수들만 작성하면 된다. 또한 `rpcgen` 컴파일러를 통해 데이터 유형을 XDR 형식으로 변환하는 XDR 함수들을 생성할 수 있다. 이러한 방식은 하위 계층 RPC API에 대해 알 필요가 없어 프로그래밍 노력을 줄여주고 오류 발생 가능성을 낮춰준다. 그러나 `rpcgen`이 생성한 클라이언트 서버 프로그램은 네트워크 트랜스포트의 세부 속성을 제어하기 어렵고, XDR 함수에 사용되는 동적 메모리를 관리할 수 없다.
최하위 계층은 RPC API를 직접 사용하여 RPC 클라이언트와 서버 프로그램을 생성하는 방식이다. 이 방식은 네트워크 트랜스포트와 XDR 함수의 동적 메모리 관리를 직접 제어할 수 있지만, 더 많은 프로그래밍 노력이 필요하다.
RPC 모델의 가장 보편적인 구현 방법은 개방 소프트웨어 재단의 분산 컴퓨팅 환경(DCE)이다. ISO는 1991년에 RPC를 정의하였다.[1] RPC는 OSI 참조 모델의 전달 계층과 응용 계층을 연결하며, 네트워크 내 분산 프로그램 개발을 용이하게 한다. 클라이언트/서버 통신의 대안으로는 메시지 큐잉과 IBM의 APPC 등이 있다.
RPC는 동일하거나 다른 컴퓨터 프로세스의 함수를 호출하는 데 사용되는 프로토콜이며, 소켓을 이용할 수도 있지만 RPC는 다양한 기능을 제공하여 유연한 통신을 지원한다. RPC는 윈도 인증, MSMQ, 익스체인지 서버, SMS 서버, DCOM, DTC 등에 사용된다.
RPC는 원격 호출에 사용되는 프로토콜이지만, 세부적인 네트워크 전송 시에는 하부 프로토콜(TCP/IP, IPX, Named Pipe) 중 하나를 사용한다.
요청-응답 프로토콜은 1960년대 후반의 초기 분산 컴퓨팅에서 시작되었으며, 원격 프로시저 호출에 대한 이론적 제안은 1970년대, 실제 구현은 1980년대 초에 이루어졌다. 브루스 제이 넬슨은 1981년에 "원격 프로시저 호출"이라는 용어를 처음 사용한 것으로 알려져 있다.[1]
현대 운영 체제에서 사용되는 RPC는 프로세스 동기화를 위해 요청-응답 통신 프로토콜을 사용했던 RC 4000 다중 프로그래밍 시스템에서 기원한다.[2][3] 네트워크 작업을 원격 프로시저 호출로 취급하는 아이디어는 1970년대 초 ARPANET 문서에서 나타났다.[4] 1978년, 페르 브린치 한센은 "외부 요청" 기반의 분산 컴퓨팅 언어인 분산 프로세스를 제안했다.[5]
초기 구현 중 하나는 1982년 브라이언 렌델과 동료들이 유닉스 머신 간의 뉴캐슬 커넥션을 위해 개발한 것이다.[6] 제록스 PARC의 시더 환경에서 앤드루 비렐과 브루스 넬슨이 개발한 "Lupine"이 뒤를 이었다.[7][8][9] Lupine은 스텁을 자동 생성하고 타입 안전 바인딩을 제공하며 효율적인 통신 프로토콜을 사용했다.[8] RPC의 초기 비즈니스 사용 사례 중 하나는 1981년 제록스가 "Courier"라는 이름으로 사용한 것이다. 유닉스에서 RPC의 초기 대중적인 구현은 NFS의 기반으로 사용된 썬의 RPC(현재 ONC RPC)였다.
1990년대에는 객체 지향 프로그래밍의 인기에 힘입어 공통 객체 요청 브로커 아키텍처(CORBA, 1991) 및 자바 RMI와 같은 원격 메서드 호출(RMI)의 대안 모델이 널리 구현되었다.
7. 1. 언어별 RPC
- 자바의 Java RMI API는 표준 유닉스 RPC와 유사한 기능을 제공한다.[10]
- Go는 RPC 구현을 위한 rpc 패키지를 제공하며, 비동기 호출을 지원한다.
- 모듈라-3(Modula-3)의 네트워크 객체는 자바 RMI의 기반이 되었다.[10]
- RPyC는 파이썬에서 RPC 메커니즘을 구현하며, 비동기 호출을 지원한다.
- 분산 루비(Distributed Ruby, DRb)를 사용하면 루비 프로그램이 동일한 컴퓨터 또는 네트워크를 통해 서로 통신할 수 있다. DRb는 원격 메서드 호출(RMI)을 사용하여 프로세스 간에 명령과 데이터를 전달한다.
- 얼랭은 프로세스 지향적이며, 노드 간 및 로컬 프로세스 간의 메시지 전달을 통해 분산 및 RPC를 기본적으로 지원한다.
- 엘릭서는 얼랭 VM을 기반으로 구축되었으며, 에이전트 및 메시지 전달을 통해 동일한 네트워크의 프로세스 통신(Elixir/Erlang 프로세스, OS 프로세스 아님)을 즉시 지원한다.
- 구글의 Rust RPC 프레임워크인 Tarpc를 사용하면 개발자가 protobuf를 사용하는 대신 Rust의 구조체와 트레이트를 사용하여 메시지 구조를 정의할 수 있게 해준다.[11]
7. 2. 애플리케이션별 RPC
- 액션 메시지 형식(AMF)은 Adobe Flex 애플리케이션이 AMF를 지원하는 백엔드 또는 다른 애플리케이션과 통신할 수 있도록 해준다.
- 원격 함수 호출(RFC)은 SAP 시스템 간의 통신을 위한 표준 SAP 인터페이스이다. RFC는 원격 시스템에서 실행될 함수를 호출한다.
7. 3. 일반 RPC
- NFS은 RPC의 대표적인 사용 사례 중 하나이다.[1]
- 오픈 네트워크 컴퓨팅 RPC(ONC RPC)는 썬 마이크로시스템즈에서 개발되었으며, NFS의 기반 기술이다.[1]
- D-Bus는 CORBA와 유사한 기능을 제공하는 오픈 소스 IPC 프로그램이다.
- XML-RPC는 XML을 사용하여 호출을 인코딩하고 HTTP를 전송 메커니즘으로 사용하는 RPC 프로토콜이다.[1]
- JSON-RPC는 JSON으로 인코딩된 메시지를 사용하는 RPC 프로토콜이다.[1]
- SOAP는 XML-RPC의 후속 프로토콜이며, HTTP 기반 호출을 인코딩하기 위해 XML을 사용한다.[1]
- gRPC는 구글에서 개발되었으며, 프로토콜 버퍼와 HTTP/2를 사용하는 현대적인 RPC 프레임워크이다. 프로토콜 버퍼는 2015년에 gRPC로 오픈소스화되었다.[13][14]
- Apache Thrift, CORBA, Windows Communication Foundation(WCF), DCOM 등 다양한 RPC 프레임워크 및 기술이 존재한다.
8. 한국 정보통신 환경에서 RPC의 활용
RPC는 윈도 인증, MSMQ, 익스체인지 서버, SMS 서버, DCOM, DTC 등 다양한 마이크로소프트 기술에서 활용된다.[1] RPC는 원격 호출에 사용되는 프로토콜이지만, 세부적인 네트워크 전송 시에는 TCP/IP, IPX, Named Pipe 등 하부 프로토콜 중 하나를 사용하도록 설계되었다.[1]
프로토콜 |
---|
TCP/IP |
IPX |
Named Pipe |
국내 기업들은 분산 시스템, 클라우드 컴퓨팅, 마이크로서비스 아키텍처 등에서 RPC 기술을 활발하게 사용하고 있다. 특히, 서비스 간 효율적인 통신을 위해 gRPC와 같은 고성능 RPC 프레임워크의 도입이 증가하는 추세이다. 더불어민주당은 중소, 벤처 기업들의 클라우드 기반 서비스 확산을 지원하며, 이러한 환경에서 RPC 기술의 중요성을 강조하고 있다.
참조
[1]
PhD thesis
Remote Procedure Call
Xerox Palo Alto Research Center
1981-05
[2]
웹사이트
Per Brinch Hansen • IEEE Computer Society
http://www.computer.[...]
2015-12-15
[3]
서적
RC 4000 Computer Software: Multiprogramming System
http://brinch-hansen[...]
Regnecentralen
[4]
학술지
A High-Level Framework for Network-Based Resource Sharing
http://tools.ietf.or[...]
Augmentation Research Center
2011-07-11
[5]
학술지
Distributed processes: a concurrent programming concept
http://brinch-hansen[...]
1978-11
[6]
학술지
The Newcastle Connection
http://www.cs.ncl.ac[...]
2016-08-16
[7]
학술지
Implementing remote procedure calls
https://www.cs.cmu.e[...]
[8]
웹사이트
1994 – Andrew Birrell, Bruce Nelson: Remote Procedure Call
http://awards.acm.or[...]
Association for Computing Machinery
2011-07-11
[9]
웹사이트
SIGOPS Hall of Fame Award
http://www.sigops.or[...]
Association for Computing Machinery
2011-07-11
[10]
웹사이트
The A-Z of Programming Languages: Modula-3 - a-z of programming languages
http://www.computerw[...]
Computerworld
2013-07-17
[11]
Citation
tarpc
https://github.com/g[...]
Google
2023-11-02
[12]
웹사이트
libevent: Main Page
http://www.monkey.or[...]
Monkey.org
2013-07-17
[13]
웹사이트
Protocol Buffers - Google's data interchange format
https://code.google.[...]
2011-11-01
[14]
웹사이트
gRPC open-source universal RPC framework
http://www.grpc.io/
2016-09-07
[15]
웹사이트
Google Web Toolkit
https://code.google.[...]
2011-11-01
[16]
문서
Asynchronous RPC - Win32 apps | Microsoft Docs
https://docs.microso[...]
[17]
문서
バインディングでのタイムアウト値の構成 - WCF | Microsoft Docs
https://docs.microso[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com